\section{Caso de uso: Darse de alta como usuario.}
\begin{description}
  \item[Actor:] Cliente.
  \item[Precondición:] El cliente no está logeado en la web.
  \item[Descripción:] El cliente se registra en la web haciendo click en el
  botón «Registrarse» o bien se le invita a crear una cuenta antes de finalizar
  una compra.
\end{description}

\subsubsection{Escenario normal 1: el cliente pulsa el botón «Registrarse»}

\begin{enumerate}
  \item El cliente pincha en el botón para registrarse de la página web.
  \item La página web dice al controlador que cree un nuevo cliente temporal.
  \item El controlador solicita los datos del cliente a la página web.
  \item La página web solicita los datos al cliente.
  \item El cliente introduce sus datos en la página web.
  \item La página web entrega al controlador los datos del cliente.
  \item El controlador actualiza al cliente con los datos recibidos.
  \item El controlador envía al agente el nuevo cliente.
  \item El agente crea una entrada para el nuevo cliente en la base de datos.
  \item El agente confirma la creación de la entrada del nuevo cliente al controlador.
  \item El controlador confirma a la página web la creación del nuevo usuario.
  \item La página web confirma al usuario la creación de su cuenta.
\end{enumerate}

\begin{description}
  \item[Postcondición:] El nuevo cliente se encuentra almacenado en la base de datos.
\end{description}

\subsubsection{Escenario normal 2: el cliente crea su cuenta de usuario antes
de finalizar una compra}

\begin{enumerate}
  \item El cliente pincha en el botón para completar una compra.
  \item La página web dice al controlador que cree un nuevo cliente temporal.
  \item El controlador solicita los datos del cliente a la página web.
  \item La página web solicita los datos al cliente.
  \item El cliente introduce sus datos en la página web.
  \item La página web entrega al controlador los datos del cliente.
  \item El controlador actualiza al cliente con los datos recibidos.
  \item El controlador envía al agente el nuevo cliente.
  \item El agente crea una entrada para el nuevo cliente en la base de datos.
  \item El agente confirma la creación de la entrada del nuevo cliente al
  controlador.
  \item El controlador confirma a la página web la creación del nuevo usuario.
  \item La página web confirma al usuario la creación de su cuenta.
\end{enumerate}

\begin{description}
  \item[Postcondición:] El nuevo cliente se encuentra almacenado en la base de datos.
\end{description}

\subsubsection{Escenario alternativo 1: el cliente introduce los datos de forma
incorrecta}

\begin{enumerate}
  \setcounter{enumi}{4}
  \item El cliente introduce sus datos de forma incorrecta en la página web.
  \item La página web solicita al cliente que corrija los datos incorrectos
  (vuelve al paso 5 del escenario normal).
\end{enumerate}

\begin{description}
  \item[Postcondición:] No se almacena el cliente en la base de datos.
\end{description}

\subsubsection{Escenario alternativo 2: el nombre de usuario elegido por el
cliente ya existe}

\begin{enumerate}
  \setcounter{enumi}{7}
  \item El controlador envía al agente el cliente para registrarlo en la base
  de datos.
  \item El agente le dice al controlador que el nombre de usuario ya esta en uso.
  \item El controlador le dice a la página web que el nombre de usuario ya esta
  en uso.
  \item La página web solicita al usuario un nuevo nombre de usuario (vuelve al
  paso 5 del escenario normal).
\end{enumerate}

\begin{description}
  \item[Postcondición:] No se almacena el cliente en la base de datos.
\end{description}

\subsubsection{Escenario alternativo 3: la dirección de correo electrónica
introducida por el cliente ya existe}

\begin{enumerate}
  \setcounter{enumi}{7}
  \item El controlador envía al agente el cliente para registrarlo en la base
  de datos.
  \item El agente le dice al controlador que la dirección de correo electrónico
  ya esta en uso.
  \item El controlador le dice a la página web que la dirección de correo
  electrónico ya esta en uso.
  \item La página web solicita al usuario una nueva dirección de correo
  electrónico (vuelve al paso 5 del escenario normal).
\end{enumerate}

\begin{description}
  \item[Postcondición:] No se almacena el cliente en la base de datos.
\end{description}
